/***********************************************************************************
 * 文件名： sled_ctrl_static.c
 * 版本： 1
 * 说明：
 * 		单色LED控制器。按照指令控制单色LED做一些动作。静态定义意味着只支持1个LED，多个LED
 *  暂不支持。
 *      在合适的地方调用 SLEDC_CtrlLoop 确保其间隔10ms左右会被执行一次，比如加入到
 *  Polsys_lite 的任务列表，如果使用的是 Polsys 就不需要再做这项工作，本文件已经创建了任务，
 *  但是需要在程序启动时调用 SLEDC_Init() 用于创建任务。
 *      通过 SLEDC_SetAction 设置动作， SLEDC_GetAction 可以获取当前的动作，一般用来判断
 *  是否为 SLEDC_ACT_NULL ，即是否空闲。
 *      在文件 SLED_ctrl_config.h 进行正确的配置。
 * 修改记录：
 * 	2022/04/01: 初版。 黄均铭。
***********************************************************************************/
#ifndef _SLED_CTRL_STATIC_H_
#define _SLED_CTRL_STATIC_H_

#include "stddef.h"
#ifdef __NO_INCLUDE_PATH
#include "..\..\..\projects\prj\bsp\sled_ctrl_config.h"
#else
#include "sled_ctrl_config.h"
#endif
#include "..\..\polsys.h"

// 自定义类型

typedef enum _sled_action_t // LED动作（状态）
{
    SLEDC_ACT_NULL, // LED已经熄灭，没有任何动作，空闲
    SLEDC_ACT_WAIT, // OFF后等待LED熄灭，因为PWM控制器一个周期后才会更新，这里只等待10ms
    SLEDC_ACT_ON,
    SLEDC_ACT_OFF,
    SLEDC_ACT_FLASH,
    //SLEDC_ACT_FAST_FLASH,
    SLEDC_ACT_GRA_ON,
    SLEDC_ACT_GRA_OFF,
    //SLEDC_ACT_ON_GRA_OFF,
    SLEDC_ACT_BREATH,
    _SLEDC_ACT_END
} sled_action_t;

extern sled_action_t _SLEDC_Action;
// extern u8 _SLEDC_ActionValue;

// APIs

#ifdef POLSYS_LITE
void SLEDC_CtrlLoop();
#else
void SLEDC_Init();
#endif

// 设置LED动作
// action_value - 闪烁次数、时长（单位10ms）
void SLEDC_SetAction(sled_action_t action, u8 action_value);

// 获取当前在执行的动作
#define SLEDC_GetAction() _SLEDC_Action

#endif
